package org.blogwu.learn.designpattern.chapter10.v1;

/**
 * 业务场景：
 * 在网上兑换了一个积分礼物，兑换流程分为
 * 1. 积分校验，校验积分是否足够兑换礼物
 * 2. 兑换逻辑。此逻辑可能比较复杂，比如扣减积分，查看礼物库存是否充足等
 * 3. 物流逻辑，打包礼物到快递。并返回订单号
 * <p>
 * 这时候  如果进行服务拆分，拆分成了三个rpc服务， 这是要按顺序调用这三个接口
 *
 * @author hyf
 * @date 2018-10-25
 **/
public class Main {

    public static void main(String[] args) {
        // 传统模式  需要手动去调用方法
        PointGift pointGift = new PointGift("Mac book pro 2018");
        QualifyService qualifyService = new QualifyService();
        if (qualifyService.isAvailable(pointGift)) {
            PointsPaymentService pointsPaymentService = new PointsPaymentService();
            if (pointsPaymentService.pay(pointGift)) {
                ShippingService shippingService = new ShippingService();
                System.out.println(shippingService.shipGift(pointGift));
            }
        }

    }
}
